package cloud.lysky.java.on.design_pattern.observer;

/**
 * @author luoly
 * @describe
 * @date 2022-08-20 11:22
 **/
public class LambdaApp {
    //Observer接口的所有实现类都提供了一个方法：notify。新闻到达时，它们都只是对同一段代码封装执行。
    //Lambda表达式的设计初衷就是要消除这样的僵化代码。使用Lambda表达式后，你无需显式地实例化三个观察者对象，
    //直接传递Lambda表达式表示需要执行的行为即可

    public static void main(String[] args) {
        Feed f = new Feed();
        f.registerObserver(tweet -> {
            if (tweet != null && tweet.contains("wine")){
                System.out.println("Today cheese,wine and news!" + tweet);
            }
        });
        f.registerObserver(tweet -> {
            if (tweet != null && tweet.contains("queen")){
                System.out.println("Yet another news in London..." + tweet);
            }
        });
        f.registerObserver(tweet -> {
            if (tweet != null && tweet.contains("money")){
                System.out.println("Breaking news in NY!" + tweet);
            }
        });
        f.notifyObservers("The queen said her favourite book is Java 8 in Action!");
    }
}